from django.shortcuts import render
from rest_framework.response import Response

from rest_framework.views import APIView
from rest_framework.viewsets import ReadOnlyModelViewSet

from goods.models import GoodsGroup, Goods, GoodsBanner
from goods.serializers import GoodsGroupSerializer, GoodsSerializer, GoodsBannerSerializer

# Create your views here.
"""
商品模块前台的接口
1.商城的首页：
返回商品的分类信息
返回商品的海报图
返回商品的推荐列表
2.展示商品的详细信息
3.分类获取商品的列表
支持分类获取(过滤的参数：)
获取推荐的商品
根据商品进行排序(销量排序，价格排序)
4.商品的收藏与取消收藏
"""


class IndexView(APIView):
    """商城首页数据获取的接口"""

    def get(self, request):
        # 获得商品所有的分类信息
        group = GoodsGroup.objects.filter(status=True)
        group_ser = GoodsGroupSerializer(group, many=True)
        # 获取商品的海报图
        banner = GoodsBanner.objects.filter(status=True)
        banner_ser = GoodsBannerSerializer(banner, many=True)
        # 获取所有推荐的商品
        goods = Goods.objects.filter(recommend=True)
        goods_ser = GoodsSerializer(goods, many=True)
        # 封装到一个变量当中
        result = dict(
            group=group_ser.data,
            banner=banner_ser.data,
            goods=goods_ser.data
        )
        return Response(result)


class GoodsView(ReadOnlyModelViewSet):
    """商品的视图集"""
    queryset = Goods.objects.filter()
    serializer_class = GoodsSerializer

    # 实现通过商品的分类，和是否推荐进行过滤
    filterset_fields = ['group', 'recommend']
